{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Cookbook for using Clarifai LLM and Embedders with Embedchain"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step-1: Install embedchain-clarifai package"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install embedchain[clarifai]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step-2: Set Clarifai PAT as env variable.\n",
    "Sign-up to [Clarifai](https://clarifai.com/signup?utm_source=clarifai_home&utm_medium=direct&) platform and you can obtain `CLARIFAI_PAT` by following this [link](https://docs.clarifai.com/clarifai-basics/authentication/personal-access-tokens/).\n",
    "\n",
    "optionally you can also pass `api_key` in config of llm/embedder class."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "from embedchain import App\n",
    "\n",
    "os.environ[\"CLARIFAI_PAT\"]=\"xxx\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step-3 Create embedchain app using clarifai LLM and embedder and define your config.\n",
    "\n",
    "Browse through Clarifai community page to get the URL of different [LLM](https://clarifai.com/explore/models?page=1&perPage=24&filterData=%5B%7B%22field%22%3A%22use_cases%22%2C%22value%22%3A%5B%22llm%22%5D%7D%5D) and [embedding](https://clarifai.com/explore/models?page=1&perPage=24&filterData=%5B%7B%22field%22%3A%22input_fields%22%2C%22value%22%3A%5B%22text%22%5D%7D%2C%7B%22field%22%3A%22output_fields%22%2C%22value%22%3A%5B%22embeddings%22%5D%7D%5D) models available."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Use model_kwargs to pass all model specific parameters for inference.\n",
    "app = App.from_config(config={\n",
    "    \"llm\": {\n",
    "        \"provider\": \"clarifai\",\n",
    "        \"config\": {\n",
    "            \"model\": \"https://clarifai.com/mistralai/completion/models/mistral-7B-Instruct\",\n",
    "            \"model_kwargs\": {\n",
    "            \"temperature\": 0.5,\n",
    "            \"max_tokens\": 1000\n",
    "            }\n",
    "        }\n",
    "    },\n",
    "    \"embedder\": {\n",
    "        \"provider\": \"clarifai\",\n",
    "        \"config\": {\n",
    "            \"model\": \"https://clarifai.com/openai/embed/models/text-embedding-ada\",\n",
    "        }\n",
    "}\n",
    "})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step-4: Add data sources to your app"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "app.add(\"https://www.forbes.com/profile/elon-musk\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step-5: All set. Now start asking questions related to your data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "while(True):\n",
    "    question = input(\"Enter question: \")\n",
    "    if question in ['q', 'exit', 'quit']:\n",
    "        break\n",
    "    answer = app.query(question)\n",
    "    print(answer)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "v1",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python",
   "version": "3.9.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
